"""
封装
面向对象三大特征：封装、继承、多态
封装：将属性和方法放在一个类中，对类中的属性和方法进行约束和限制，只能通过类提供的方法访问和使用属性


私有成员：
- 私有成员变量
- 私有成员方法

定义方式：
私有成员变量：变量名以__开头(两个下划线)
私有成员方法：方法名以__开头(两个下划线)

私有成员的意义是什么？
在类中提供仅供内部使用的属性和方法，而不对外开放（类对象无法使用）
"""

# print("================================== 私有成员变量和私有成员方法")
# class Phone:
#     __current_voltage = None
#
#     def __keep_single_core(self):
#         print("保持手机单核运行")
#
#
# phone = Phone()
# phone.__keep_single_core()  # 控制台报错
# print(phone.__current_voltage)  # 控制台报错

print("================================== 如何访问私有")


class Phone:
    # __current_voltage = 1
    __current_voltage = 0.5

    def __keep_single_core(self):
        print("保持手机单核运行")

    def call_by_5g(self):
        """
        成员方法是可以使用私有变量、私有方法的
        :return:
        """
        if self.__current_voltage >= 1:
            print("5G通话已开启")
        else:
            self.__keep_single_core()
            print("电量不足，无法使用5G通话，并己设置为单核运行进行省电。")


phone = Phone()
phone.call_by_5g()  # 未报错，证明：类中的其它成员可以访问私有成员
